package com.halfsword.creativecraft.modules.interfaces;

import com.halfsword.creativecraft.utils.ContainerDataBuilder;
import com.halfsword.creativecraft.utils.ContainerDataReader;
import com.halfsword.creativecraft.utils.ContainerDataWriter;

/**
 * 数据同步功能接口
 * 提供数据同步功能的模块应实现此接口
 */
public interface IDataSyncFacet extends IMachineModule {

    /**
     * 向ContainerDataBuilder添加数据字段
     * @param builder ContainerDataBuilder实例
     */
    void populateContainerData(ContainerDataBuilder builder);

    /**
     * 从ContainerDataReader读取数据字段
     * @param reader ContainerDataReader实例
     */
    void readFromContainerData(ContainerDataReader reader);

    /**
     * 获取数据字段数量
     * @return 数据字段数量
     */
    int getDataFieldCount();

    /**
     * 数据变化时调用，用于标记需要同步
     */
    void markDataDirty();

    /**
     * 检查数据是否需要同步
     * @return 数据是否需要同步
     */
    boolean isDataDirty();

    /**
     * 清除数据脏标记
     */
    void clearDataDirty();

    interface Extended extends IDataSyncFacet {
        void writeToContainerData(ContainerDataWriter writer);
    }
}